home *** CD-ROM | disk | FTP | other *** search
-
- DK2P
- 001 FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
- 002 *USER*KERMIT
- 003 *11 MAR 1987
- 004 *2.0
- 005 *11 MAR 1987
- 006 *JF3
- 007 *For PICK on PC/XT
- 008 DEV-ADDR DEFN 2 2610 address.\ N 2 1
- 009 ST AR 7 Status reg.
- 010 STATUS DEFH ST,0 Status byte.\ H 0 7
- 011 CMPSTAT DEFT ST,0 Complete - both bytes\ T 0 7
- 012 TAS DEFB ST,0 Test alternate status.\ B 0 7
- 013 PE DEFB ST,2 Parity error.\ B 2 7
- 014 FE DEFB ST,3 Framing error.\ B 3 7
- 015 OE DEFB ST,4 Overrun error.\ B 4 7
- 016 OUT-RDY DEFB ST,5 Output ready.\ B 5 7
- 017 INP-RDY DEFB ST,6 Input ready.\ B 6 7
- 018 NCCIO DEFB ST,7 Not concurrent i/o.\ B 7 7
- 019 ALT-STAT DEFH ST,1 Alternate status.\ H 1 7
- 020 DSR DEFB ST,13 Data Set Ready.\ B D 7
- 021 ALT-FUNC DEFC ST,3 Alternate function.\ C 3 7
- 022 RTS DEFB ST,30 Request To Send.\ B 1E 7
- 023 MASK-STAT DEFH ST,2 Masked status HTLY.\ H 2 7
- 024 MASK DEFH ST,4 Status mask.\ H 4 7
- 025 OK DEFH ST,5 Status test condx.\ H 5 7
- 026 MASK-OK DEFT ST,2 Above two combined.\ T 2 7
- 027 PERIOD DEFH 0,38 Timeout seconds.\ H 26 0
- 028 CT AR 9 Control Table reg.
- 029 CTSAVE EQU AFEND A safe place?
- 030 LASTIM EQU D9 Timer reset refer.
- 031 NOPRMPT DEFC TS,1\ C 1 D
- 032 B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
- 033 B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
- 034 XCHNP EQU *\0005
- 035 MOV TSBEG,TS Init reg. and\0005 E06EED
- 036 INC TS inc to MARK char.\0008 3D
- 037 MCC TS,SC2 Move MARKER char.\0009 D0050D
- 038 SRA R15,PRMPC EOL in there.\000C E0023F
- 039 MCC R15,TS Get prompt (EOL).\000F 6DF9
- 040 BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
- 041 MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
- 042 BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
- BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
- 043 WRITE TS Send EOL as prompt.\001F 6DDD
- 044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
- : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
- 02B 6DDD]=L002 EQUX *
- 045 BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
- 046 Next-char INC TS To next position.\0031 3D
- 047 READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
- ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
- =L003 EQUX *
- 048 BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
- 0
- 049 MCAL TS,6,11 Unlock buffer.\0042 4D06AB
- 050 MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
- 051 BSL STR-PAR Strip 8th bit.\0048 1852
- 052 DEC TS For return I/F.\004A 2D
- 053 MOV TS,TSEND I/F Requirement.\004B E071DD
- 054 ENT 1,CONV CONV Return.\004E 10105A
- 055 * * * * *Send a packet thru i/f only.* * * * *
- 056 SENDP EQU *\0051
- 057 RTN * To DATA/BASIC.\0051 14
- 058 * * * * * Modem i/f. * * * * *
- 059 MODEM EQU *\0052
- 060 RTN *\0052 14
- 061 * * * * * Strip parity * * * * *
- 062 STR-PAR EQU *\0053
- 063 MOV TSBEG,TS Init reg.\0053 E06EED
- 064 AGN? INC TS To next char.\0056 3D
- 065 BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
- 066 AND TS,X'7F' 8th bit = 0.\005B 4D7F70
- 067 B AGN? Loop.] B: AGN?\005E 1E55
- 068 * * * * * end new stuff * * * * *
- 069 RTN RTN * General return.\0060 14
- 070 END
- 071 B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
- 072 B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
- 073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
- 074 *
- 075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
- 076 *EXIT: ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
- 077 *
- 078 I/F-STAT EQU *\0065
- 079 IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
- 080 BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
- 081 ZERO ALT-STAT else set alt.=X'00'\006C A70100
- 082 RTN * and return.\006F 14
- 083 TST-ALT INC ST To alternate byte.\0070 37
- 084 IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
- 085 DEC ST Back to proper position\0074 27
- 086 RTN * and return to caller.\0075 14
- 087 * * * * *
- 088 *ENTRY: OB POINTS TO RX# ADDR CHAR
- 089 *EXIT: SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
- 090 *
- 091 IBENDDSP DEFT 0,231\ T E7 0
- 092 READ-REC EQU *\0076
- 093 BSL READY? CK OK.\0076 1958
- 094 BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
- 095 MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
- 096 BSL SEND-CHAR SEND OUT.\007E 194F
- 097 BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
- 098 IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
- 099 MOV R1,CS POINT TO PROMPT.\0087 161C
- 100 BSL SEND-CHAR TO MICROMUX.\0089 194F
- 101 SRA R15,ALT-FUNC RAISE THE\008B E7033F
- 102 OR R15,X'02' RTS LINE TO\008E 4F0210
- 103 IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
- 104 MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
- 105 MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
- STOREH PERIOD\009B A02619
- 106 BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
- 107 SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
- 108 AND R15,X'FD' THE RTS LINE\00A3 4FFD70
- 109 IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
- 110 BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
- 111 IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
- 112 MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
- 113 BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
- 114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
- 115 LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
- 116 BSL EMSGA SETUP MSG ID.\00B9 1944
- 117 MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
- T,TS\00BE D7007D
- 118 BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
- 119 B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
- 120 READ-DONE EQU * DATA READ COMPLETE.\00C5
- 121 MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
- 122 MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
- 123 MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
- 124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
- 125 BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
- 126 FAULT SB FBIT FLAG FAULT.\00D7 8085
- 127 B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
- 128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
- AAE3
- 129 MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
- 130 B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
- 131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
- 132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
- CCNR SM,R15\00E9 4FFF20
- 133 RTN * TO CALLER.\00EC 14
- 134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
- 135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
- 58] STOREH PERIOD\00F0 A02619
- 136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
- 137 ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
- 138 STORE D2 FOR CHECKING LATER.\00F9 A01899
- 139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
- 140 MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
- 141 MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
- 142 LOAD R0FID D1 TO MASK STATUS.\0106 A08298
- 143 MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
- X'14',R15\010C 4F1420
- 144 SRA R15,H1 SET ENTRY POINT\010F E00E3F
- 145 AND R15,X'0F' IN UPPER HALF\0112 4F0F70
- 146 OR R15,X'40' OF H1 AS 4.\0115 4F4010
- 147 SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
- 148 MCC ST,R15 STATUS TO BUFFER.\011B 6F79
- 149 BSLI * MASK IT.\011D 13
- 150 BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
- 11E F7021705\0122 5527
- 151 ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
- 152 B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
- 153 STIM RQM * PAUSE.\0128 4000A9
- 154 TIME * GET CURRENT TIME INTO D0\012B 4000AA
- 155 BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
- 2 593B
- 156 MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
- 157 MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
- 158 B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
- 159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
- 0140 5CFB
- 160 SB SBIT FLAG BAD STATUS\0142 8092
- 161 TIMER-RTN RTN * TO CALLER\0144 14
- 162 * * * * *STATUS ERROR PROCESSING* * * * *
- 163 EMSGA EQU * SETUP ERROR MSG ID.\0145
- 164 RTN * TO CALLER.\0145 14
- 165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
- 166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
- 167 MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
- 168 BSL PRTERR PRINT MESSAGE.\014C 11000C
- 169 RTN * TO CALLER.\014F 14
- 170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
- 171 SEND-CHAR EQU *\0150
- 172 IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
- 173 MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
- 174 B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
- 175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
- 176 READY? EQU *\0159
- 177 BSL I/F-STAT Get status of i/f.\0159 1864
- 178 BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
- 179 MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF
-
- 180 BSL TIMER3 Check if ready.\0163 18EC
- 181 BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
- 182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
- 183 MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
- 184 BSL TIMER3 Check if ready.\0171 18EC
- 185 BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
- 186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
- 187 IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
- 188 MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
- E
- 189 BSL TIMER3 Check and loop.\0182 18EC
- 190 BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
- 191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
- 192 SRA R15,MASK Point to scratch area.\018C E7043F
- 193 IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
- 194 MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
- 195 BSL TIMER3 Check it out.\0196 18EC
- 196 RR9 RTN * It's ready.\0198 14
- 197 END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
- TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
- :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
- ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084
-
- XDK2X
- 001 =INT(s/64);L=L+1 REPEAT
- 002 CASE CHKT=3;*Insert assembly call here
- 003 END CASE
- 004 9 RETURN;END
- 005 (c,1,0);check=c:check
- 006 UNTIL L=2 DO stus byte.
- 007 CMPSTAT DEFT ST,0 Complete - both bytes
- 008 TAS DEFB ST,0 Test alternate status.
- 009 PE DEFB ST,2 Parity error.
- 010 FE DEFB ST,3 Framing error.
- 011 OE DEFB ST,4 Overrun error.
- 012 OUT-RDY DEFB ST,5 Output ready.
- 013 INP-RDY DEFB ST,6 Input ready.
- 014 NCCIO DEFB ST,7 Not concurrent i/o.
- 015 ALT-STAT DEFH ST,1 Alternate status.
- 016 DSR DEFB ST,13 Data Set Ready.
- 017 ALT-FUNC DEFC ST,3 Alternate function.
- 018 RTS DEFB ST,30 Request To Send.
- 019 MASK-STAT DEFH ST,2 Masked status HTLY.
- 020 MASK DEFH ST,4 Status mask.
- 021 OK DEFH ST,5 Status test condx.
- 022 MASK-OK DEFT ST,2 Above two combined.
- 023 PERIOD DEFH 0,38 Timeout seconds.
- 024 CT AR 9 Control Table reg.
- 025 CTSAVE EQU AFEND A safe place?
- 026 LASTIM EQU D9 Timer reset refer.
- 027 EOL EQU PRMPC
- 028 B XCHNP 01F2 Exchange packets.
- 029 B SENDP 11F2 Send a packet thru i/f.
- 030 XCHNP EQU *
- 031 MOV TSBEG,TS Init reg. and
- 032 INC TS inc to MARK char.
- 033 MCC TS,SC2 Move MARKER char.
- 034 SRA R15,PRMPC EOL in there.
- 035 BBS MBIT,MODEM Brif 2610 i/o.
- 036 MCC R15,TS Get prompt (EOL).
- 037 MCAL TS,5,11 Lock buffer frame.
- 038 WRITE TS Send EOL as prompt.
- 039 Find-MARK READ TS Get next char.
- 040 BCU TS,SC2,Find-MARK No MARKER yet.
- 041 Next-char INC TS To next position.
- 042 READ TS Get next char.
- 043 BCU TS,PRMPC,Next-char Brif not end.
- 044 MCAL TS,6,11 Unlock buffer.
- 045 MCI SM,TS Terminate for CONV I/F.
- 046 BSL STR-PAR Strip 8th bit.
- 047 DEC TS For return I/F.
- 048 MOV TS,TSEND I/F Requirement.
- 049 ENT 1,CONV CONV Return.
- 050 * * * * *Send a packet thru i/f only.* * * * *
- 051 SENDP EQU *
- 052 RTN * To DATA/BASIC.
- 053 * * * * * Strip parity * * * * *
- 054 STR-PAR EQU *
- 055 MOV TSBEG,TS Init reg.
- 056 AGN? INC TS To next char.
- 057 BCE TS,SM,RTN All done.
- 058 AND TS,X'7F' 8th bit = 0.
- 059 B AGN? Loop.
- 060 RTN RTN * General return.
- 061 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
- 062 *
- 063 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
- 064 *EXIT: ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
- 065 *
- 066 I/F-STAT EQU *
- 067 IOI ST,1,DEV-ADDR Input 2610 status.
- 068 BBS TAS,TST-ALT Brif test alt. flagged
- 069 ZERO ALT-STAT else set alt.=X'00'
- 070 RTN * and return.
- 071 TST-ALT INC ST To alternate byte.
- 072 IOI ST,7,DEV-ADDR Input alt. status.
- 073 DEC ST Back to proper position
- 074 RTN * and return to caller.
- 075 * * * * *
- 076 *ENTRY: OB POINTS TO RX# ADDR CHAR
- 077 *EXIT: SBIT set means error condx in status byte(s).
- 078 *
- 079 IBENDDSP DEFT 0,231
- 080 MODEM EQU * Talk to 2610 board.
- 081 BSL READY? Check for all OK.
- 082 BBS SBIT,SERR Brif can't clear it.
- 083 IOO IB,2,DEV-ADDR Start a concurrent input.
- 084 SRA R15,EOL Point your register.
- 085 IOO R15,0,DEV-ADDR Fire!
- 086 MOV X'0404',MASK-OK OUTPUT READY
- 087 B TIMER3 WAIT TILL FINISH.
- 088 MOV X'0101',MASK-OK MASK NOT CCIO.
- 089 MOV 5,PERIOD SET 5 SECOND TIMER AND
- 090 BSL RDY-TIMER WAIT TILL DONE.
- 091 BBZ SBIT,READ-DONE BRIF FINISHED.
- 092 IOO R15,4,DEV-ADDR DISCONNECT.
- 093 MOV X'0101',MASK-OK NOT CONC. SET.
- 094 BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
- 095 SERR EQU * OUTPUT STATUS ERROR MSG.
- 096 LOAD 1 STATUS ERR MSG #.
- 097 BSL EMSGA SETUP MSG ID.
- 098 MBXN 4,CMPSTAT,TS STATUS PARAMETER.
- 099 BSL EMSGZ COMPLETE MSG BODY & PRINT.
- 100 B FAULT BACK TO CALLER.
- 101 READ-DONE EQU * DATA READ COMPLETE.
- 102 MOV IBBEG,IB RESTORE IB.
- 103 MOV IBBEG,IBEND POINT IBEND TO
- 104 MOV 511,IBENDDSP END OF FRAME.
- 105 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.
- 106 BCE IB,EOL,EOL1 Brif EOL character.
- 107 FAULT SB FBIT Flag an uh-oh.
- 108 B PKT-DONE1 No good packet.
- 109 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.
- 110 MCI SM,IB OVERWRITE CR WITH AM
- 111 B EOL-LOOP and continue.
- 112 REC-DONE ZB FBIT NO FAULT.
- 113 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
- 114 RTN * TO CALLER.
- 115 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
- 116 TIMER3 MOV 3,PERIOD Seconds to timeout.
- 117 RDY-TIMER TIME * Get time into D0.
- 118 ADD PERIOD To figure wakeup time
- 119 STORE D2 and save it.
- 120 SLOOP BSL I/F-STAT Get status byte(s).
- 121 MOV X'004F00E0',D1 Set up
- 122 MOV MASK,H5 an 'AND' instr. in
- 123 LOAD R0FID D1 to mask status.
- 124 MCC X'14',R0;C12 Set up a 'RTN' instr.
- 125 SRA R15,H1 Set entry point
- 126 AND R15,X'0F' in upper half
- 127 OR R15,X'40' of H1 as 4.
- 128 SRA R15,MASK-STAT Move the last
- 129 MCC ST,R15 status to buffer.
- 130 BSLI * Mask it.
- 131 BU MASK-STAT,OK,STIM Brif not OK.
- 132 ZB SBIT Clear status check flag.
- 133 B TIMER-RTN All is OK.
- 134 STIM RQM * Pause for awhile.
- 135 TIME * Check the time.
- 136 BLE LASTIM,D0,CTIM Clock not reset.
- 137 MOV CT,CTSAVE Save for later.
- 138 MOV CTSAVE,CT Restroe register.
- 139 B RDY-TIMER Now try again.
- 140 CTIM BL D0,D2,SLOOP Brif not yet timed out.
- 141 SB SBIT Flag bad status.
- 142 TIMER-RTN RTN * To caller.
- 143 * * * * *STATUS ERROR PROCESSING* * * * *
- 144 EMSGA EQU * SETUP ERROR MSG ID.
- 145 RTN * TO CALLER.
- 146 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
- 147 EMSGZ MCI SM,TS TERMINATOR.
- 148 MOV TSBEG,TS FOR PRTERR I/F
- 149 BSL PRTERR PRINT MESSAGE.
- 150 RTN * TO CALLER.
- 151 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
- 152 READY? EQU *
- 153 BSL I/F-STAT Get status of i/f.
- 154 BBZ TAS,RR1 Brif alt. status OK.
- 155 MOV X'8000',MASK-OK Alt. status clear.
- 156 BSL TIMER3 Check if ready.
- 157 BBS SBIT,RR9 Brif it won't come ready.
- 158 RR1 BBS OUT-RDY,RR2 Brif OK for output.
- 159 MOV X'0404',MASK-OK Output ready set.
- 160 BSL TIMER3 Check if ready.
- 161 BBS SBIT,RR9 Brif it won't come ready.
- 162 RR2 BBS NCCIO,RR3 Brif not concurrent.
- 163 IOO R15,4,DEV-ADDR Disconnect.
- 164 MOV X'0101',MASK-OK Not concurrent set.
- 165 BSL TIMER3 Check and loop.
- 166 BBS SBIT,RR9 Brif it won't clear CCIO.
- 167 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
- 168 SRA R15,MASK Point to scratch area.
- 169 IOI R15,0,DEV-ADDR Dummy character read to
- 170 MOV X'0200',MASK-OK clear input flag.
- 171 BSL TIMER3 Check it out.
- 172 RR9 RTN * It's ready.
- 173 END
-
- DK1U
- 001 FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
- 002 *USER*KERMIT
- 003 *20 APR 1987
- 004 *R10*170S
- 005 *21 APR 1987
- 006 *FISHER
- 007 *For Ultimate Processor in microVAX
- 008 B PINIT Initialize for printfile] B: INIT\0001 1E0D
- 009 B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
- 010 B ctl Controlify a char] B: ctl\0005 1E74
- 011 B CINIT Init. for catalog data.
- 012 B CNXTPKT Next catalog packet.
- 013 BEGQTAB DTLY 26854\0007 00\0008 000068E6
- 014 PF-BEG DEFD 9,6 Printfile beginning.\ D 6 9
- 015 PF-CUR DEFS 9,3 Printfile pointer.\ S 3 9
- 016 PFCURDSP DEFT 9,3 PF-CUR displacement.\ T 3 9
- 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\ D 4 9
- 018 PKTLEN TLY 80\000C 0050
- 019 PINIT EQU *\000E
- 020 BSL GINPARG Input arg to T0.\000E 187D
- 021 ZERO R9WA Detatch reg.\0010 A0A440
- 022 DIV 10 Entries per frame.] DIV =T10\0013 A14351
- 023 ADD BEGQTAB To proper FID. \0016 A10493
- 024 STORE R9FID Point to Q table.\0019 A0A699
- 025 MOV D1,D0 Get remainder.\001C F0068004
- 026 MUL 50 Bytes per entry.] MUL =T50\0020 A14450
- 027 INC T0 Byte 1; linked format.\0023 A00743
- 028 STORE R9DSP Point to table entry.\0026 A0A559
- 029 MOV R9,SR27 Save pointer.\0029 E2B5D9
- 030 MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
- 031 ONE PFCURDSP and displacement.\0030 A90341
- 032 MOV TSBEG,TS Reinit.\0033 E06EED
- 033 MCI C'1',TS Return OK.\0036 4D3140
- 034 B CRTN Done.] B: CRTN\0039 1E6A
- 035 PNXTPKT EQU *\003B
- 036 BSL GINPARG Check for length.\003B 187D
- 037 STORE CTR39 # of chars.\003D A22159
- 038 MOV SR27,R9 Point at table entry.\0040 E2B5E9
- 039 MOV TSBEG,TS Init.\0043 E06EED
- 040 MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
- 15\0049 4F0020
- 041 MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
- 004F 4F0A20
- 042 MOV PF-CUR,R15 Point at data.\0052 E903EF
- 043 BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
- 044 MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
- 045 B PKTDONE That's it.] B: PKTDONE\005C 1E67
- 046 FIXLEN MII R15,TS Move next char.\005E 6FD2
- 047 BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
- A67
- 048 BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
- 049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
- 050 CRTN MCI SM,TS Terminate for\006B 4DFF40
- 051 DEC TS CONV interface\006E 2D
- 052 MOV TS,TSEND to BASIC.\006F E071DD
- 053 ENT 1,CONV Over and out!\0072 10105A
- 054 *
- 055 ctl EQU * See PROTOCOL Manual 2.4.\0075
- 056 MOV TSBEG,TS Init reg.\0075 E06EED
- 057 INC TS To the byte.\0078 3D
- 058 XOR TS,64 Thats it!\0079 4D4050
- 059 B CRTN Finish up.] B: CRTN\007C 1E6A
- 060 GINPARG EQU *\007E
- 061 MOV TSBEG,R15 Init.\007E E06EEF
- 062 BSL CVDR15 Conv to T0\0081 114008
- 063 RTN * To caller.\0084 14
- 064 END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032
-
- DK1PA
- 001 FRAME 451\0001 000000A3
- 002 *USER*KERMIT
- 003 *04 NOV 1988
- 004 *2.2
- 005 *21 APR 1987
- 006 *JF3
- 007 *For PICK on PC/AT
- 008 B PINIT Initialize for printfile\0005 000002C0] JUS @O1
- 009 B PNXTPKT Next print data packet\0009 000002C0] JUS @O1
- 010 B ctl Controlify a char\000D 000002C0] JUS @O1
- 011 * B CINIT Init. for catalog data.
- 012 * B CNXTPKT Next catalog packet.
- 013 BEGQTAB DTLY X'1302'\0011 000004A0
- 014 PF-BEG DEFD 9,6 Printfile beginning.
- 015 PF-CUR DEFS 9,3 Printfile pointer.
- 016 PFCURDSP DEFT 9,3 PF-CUR displacement.
- 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.
- 018 PKTLEN TLY 80\0015 000002A0
- 019 PINIT EQU *\0019 000000C0
- 020 BSL GINPARG Input arg to T0.\001D 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL,
- 0]@K*]@EDS0
- 021 MOV SR27,R9 To detatch reg.\0021 002908C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@
- D4,0]@K*]@EDS0
- 022 DIV 10 Entries per frame.\0025 000009C0] MVI @O1,AX] CWD] CALLSEG #DIV32D,0
- ]@EDS0
- 023 ADD BEGQTAB To proper FID. ]%1\0029 100024] MOV @B1(2),DX] XCHG DH,DL] LDA
- @U0T0] XCHG AH,AL] ADD DX,AX] XCHG AH,AL] STA @U0T0] MOV @B1,DX] XCHG DH,DL]
- LDA @U0T1] XCHG AH,AL] ADC DX,AX] XCHG AH,AL] STA @U0T1]%2\002C 10000BC2] M
- OV @B1,CX] MOV @B1(2),DX]@FDS0] CALL @A($ADD:D)
- 024 STORE R9FID Point to Q table.]%1\0030 00000C] LDA @U0T1] STA @B1] LDA @U0T0
- ] STA @B1(2)]@W1]%2\0033 000006] MVI @B4;1,DI] CALL @A($STORE:D)]@KES]@W4
- 025 MOV D1,D0 Get remainder.\0036 00000C] LDA @B1] STA @B2] LDA @B1(2)] STA @B2
- (2)]@W2
- 026 MUL 50 Bytes per entry.\0039 000008C0] MVI @O1,AX] CALLSEG #MUL32T,0]@EDS0
- 027 INC T0 Byte 1; linked format.]%1\003D 00000BC2] LDA @B1] XCHG AH,AL] INC AX
- ] XCHG AH,AL] STA @B1]@W1]%2\0041 000006C0] MVI @B3;1,SI] CALL @A($INC:T)]@W
- 3
- 028 STORE R9DSP Point to table entry.\0045 000006] LDA @U0T0] STA @B1]@W1
- 029 MOV R9,SR27 Save pointer.]%1\0048 02901E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA]
- TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@
- B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\004B 009209] MVI @B4;2,DI] MVI @D
- 3WA,SI] CALL @A($MOV:RS)]@W4
- 030 MOV PF-BEG,PFCURFID Initialize pointer FID\004E 99000C] LDA @B1] STA @B2] L
- DA @B1(2)] STA @B2(2)]@W2
- 031 ONE PFCURDSP and displacement.\0051 900006C2] MVI.V 1,@B1]@W1
- 032 MOV TSBEG,TS Reinit.\0055 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K
- *]@EDS0
- 033 MCI C'1',TS Return OK.\0059 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\005D 0D0
- 0] MVIB @O1,@B2;0]@W2
- 034 B CRTN Done.\005F 000002C0] JUS @O1
- 035 PNXTPKT EQU *\0063 000000C0
- 036 BSL GINPARG Check for length.\0067 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL
- ,0]@K*]@EDS0
- 037 STORE CTR39 # of chars.\006B 200006] LDA @U0T0] STA @B1]@W1
- 038 MOV SR27,R9 Point at table entry.\006E 002908C0] MVI @B3;1,SI] CALLSEG #MOV
- I.SR.@D4,0]@K*]@EDS0
- 039 MOV TSBEG,TS Init.\0072 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*]
- @EDS0
- 040 MCC X'00',SC1 Spooler job filler.\0076 000005C2] MVIB @O1,@B2]@W2
- 041 MCC LF,SC2 Spooler job line term.\007A 000005C2] MVIB @O1,@B2]@W2
- 042 MOV PF-CUR,R15 Point at data.\007E 009F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR
- .@D4,0]@K*]@EDS0
- 043 BNZ CTR39,FIXLEN Brif no terminators.\0082 20000AC2] LDA @B1] XCHG AH,AL] A
- DA 0] JCS @C0,@O2
- 044 MIID R15,TS,X'83' Move thru a NUL or LF.\0086 00FD0FC0]@L1 EQU *] MVIB @O3
- ,AL] MVI @D3WA,SI] MVI @D4WA,DI]@K*]@W4] CALLSEG #MIID,0] JR @L1]@EDS0
- 045 B PKTDONE That's it.\008A 000002C0] JUS @O1
- 046 FIXLEN MII R15,TS Move next char.\008E 00FD10C0] CALLSEG #INC.@D3,0] CALLSEG
- #INC.@D4,0]@K*]@EDS0\0092 FD00] LDAB @B1;0] STAB @B2;0]@W2
- 047 BCE R15,X'00',PKTDONE NUL is last char.\0094 F00007C2] CPIB @O2,@B1;0] JCS
- @C0,@O3
- 048 BDNZ CTR39,FIXLEN Loop for more.\0098 20000FC2]@W1] LDA @B1] XCHG AH,AL] SU
- IS 1,AX] XCHG AH,AL] STA @B1] JCS @C0,@O2
- 049 PKTDONE MOV R15,PF-CUR Save for next packet.]%1\009C 09F01E]@U0] MOV @D3FID,
- DX]@U0] LDA @D3WA] TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL]
- STA @B2] MOV DX,@B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\009F 00F909] MV
- I @B4;2,DI] MVI @D3WA,SI] CALL @A($MOV:RS)]@W4
- 050 CRTN MCI SM,TS Terminate for\00A2 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\00A
- 6 0D00] MVIB @O1,@B2;0]@W2
- 051 DEC TS CONV interface\00A8 000D05C0] CALLSEG #DEC.@D4,0]@K*]@EDS0
- 052 MOV TS,TSEND to BASIC.]%1\00AC 00D01E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA] TE
- STIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@B2(
- 2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\00AF 00D009] MVI @B4;2,DI] MVI @D3WA
- ,SI] CALL @A($MOV:RS)]@W4
- 053 ENT 1,CONV Over and out!\00B2 000008C0] MVI X'@A(O1;4096;*;B2;CVD;+;CVX)',A
- X] JMPSEG #ENT,0]@K*
- 054 *
- 055 ctl EQU * See PROTOCOL Manual 2.4.\00B6 000000C0
- 056 MOV TSBEG,TS Init reg.\00BA 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]
- @K*]@EDS0
- 057 INC TS To the byte.\00BE 000D05C0] CALLSEG #INC.@D4,0]@K*]@EDS0
- 058 XOR TS,64 Thats it!\00C2 D00006C2] XRIB @O2,@B1;0]@W1
- 059 B CRTN Finish up.\00C6 000002C0] JUS @O1
- 060 GINPARG EQU *\00CA 000000C0
- 061 MOV TSBEG,R15 Init.\00CE 000F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*
- ]@EDS0
- 062 BSL CVDR15 Conv to T0\00D2 000008C0] MVI @M1,AX] CALLSEG #MODAL.BSL,0]@K*]@
- EDS0
- 063 RTN * To caller.\00D6 000005C0] JMPSEG #RTN,0]@K*
- 064 END
-
- XDK2
- 001 FRAME 498
- 002 *KERMIT
- 003 *29MAY86
- 004 *04
- 005 *02E
- 006 *FISHER
- 007 DEV-ADDR DEFN 2 2610 address.
- 008 ST AR 7 Status reg.
- 009 STATUS DEFH ST,0 Status byte.
- 010 CMPSTAT DEFT ST,0 Complete - both bytes
- 011 TAS DEFB ST,0 Test alternate status.
- 012 PE DEFB ST,2 Parity error.
- 013 FE DEFB ST,3 Framing error.
- 014 OE DEFB ST,4 Overrun error.
- 015 OUT-RDY DEFB ST,5 Output ready.
- 016 INP-RDY DEFB ST,6 Input ready.
- 017 NCCIO DEFB ST,7 Not concurrent i/o.
- 018 ALT-STAT DEFH ST,1 Alternate status.
- 019 DSR DEFB ST,13 Data Set Ready.
- 020 ALT-FUNC DEFC ST,3 Alternate function.
- 021 RTS DEFB ST,30 Request To Send.
- 022 MASK-STAT DEFH ST,2 Masked status HTLY.
- 023 MASK DEFH ST,4 Status mask.
- 024 OK DEFH ST,5 Status test condx.
- 025 MASK-OK DEFT ST,2 Above two combined.
- 026 PERIOD DEFH 0,38 Timeout seconds.
- 027 CT AR 9 Control Table reg.
- 028 CTSAVE EQU AFEND A safe place?
- 029 LASTIM EQU D9 Timer reset refer.
- 030 B XCHNP 01F2 Exchange packets.
- 031 B SENDP 11F2 Send a packet thru i/f.
- 032 XCHNP EQU *
- 033 MOV TSBEG,TS Init reg. and
- 034 INC TS inc to MARK char.
- 035 MCC TS,SC2 Move MARKER char.
- 036 SRA R15,PRMPC EOL in there.
- 037 MCC R15,TS Get prompt (EOL).
- 038 BBS MBIT,MODEM Brif 2610 i/o.
- 039 MCAL TS,5,11 Lock buffer frame.
- 040 WRITE TS Send EOL as prompt.
- 041 Find-MARK READ TS Get next char.
- 042 BCU TS,SC2,Find-MARK No MARKER yet.
- 043 Next-char INC TS To next position.
- 044 READ TS Get next char.
- 045 BCU TS,PRMPC,Next-char Brif not end.
- 046 MCAL TS,6,11 Unlock buffer.
- 047 MCI SM,TS Terminate for CONV I/F.
- 048 BSL STR-PAR Strip 8th bit.
- 049 DEC TS For return I/F.
- 050 MOV TS,TSEND I/F Requirement.
- 051 ENT 1,CONV CONV Return.
- 052 * * * * *Send a packet thru i/f only.* * * * *
- 053 SENDP EQU *
- 054 RTN * To DATA/BASIC.
- 055 * * * * * Modem i/f. * * * * *
- 056 MODEM EQU *
- 057 RTN *
- 058 * * * * * Strip parity * * * * *
- 059 STR-PAR EQU *
- 060 MOV TSBEG,TS Init reg.
- 061 AGN? INC TS To next char.
- 062 BCE TS,SM,RTN All done.
- 063 AND TS,X'7F' 8th bit = 0.
- 064 B AGN? Loop.
- 065 * * * * * end new stuff * * * * *
- 066 RTN RTN * General return.
- 067 END
- 068 B SEND-CHAR ADDRESSED BY CS REG.
- 069 B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)
- 070 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
- 071 *
- 072 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
- 073 *EXIT: ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
- 074 *
- 075 I/F-STAT EQU *
- 076 IOI ST,1,DEV-ADDR Input 2610 status.
- 077 BBS TAS,TST-ALT Brif test alt. flagged
- 078 ZERO ALT-STAT else set alt.=X'00'
- 079 RTN * and return.
- 080 TST-ALT INC ST To alternate byte.
- 081 IOI ST,7,DEV-ADDR Input alt. status.
- 082 DEC ST Back to proper position
- 083 RTN * and return to caller.
- 084 * * * * *
- 085 *ENTRY: OB POINTS TO RX# ADDR CHAR
- 086 *EXIT: SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
- 087 *
- 088 IBENDDSP DEFT 0,231
- 089 READ-REC EQU *
- 090 BSL READY? CK OK.
- 091 BBS SBIT,SERR BRIF CANT CLEAR IT.
- 092 MOV OB,CS POINT TO ADDR CHAR TO
- 093 BSL SEND-CHAR SEND OUT.
- 094 BBS SBIT,SERR BRIF SOMETHING WRONG.
- 095 IOO IB,2,DEV-ADDR START A CONCUR. INPUT.
- 096 MOV R1,CS POINT TO PROMPT.
- 097 BSL SEND-CHAR TO MICROMUX.
- 098 SRA R15,ALT-FUNC RAISE THE
- 099 OR R15,X'02' RTS LINE TO
- 100 IOO R15,7,DEV-ADDR THE MICROMUX..
- 101 MOV X'0101',MASK-OK MASK NOT CCIO.
- 102 MOV 5,PERIOD SET 5 SECOND TIMER AND
- 103 BSL RDY-TIMER WAIT TILL DONE.
- 104 SRA R15,ALT-FUNC TURN OFF
- 105 AND R15,X'FD' THE RTS LINE
- 106 IOO R15,7,DEV-ADDR FOR GOOD MEASURE.
- 107 BBZ SBIT,READ-DONE BRIF FINISHED.
- 108 IOO R15,4,DEV-ADDR DISCONNECT.
- 109 MOV X'0101',MASK-OK NOT CONC. SET.
- 110 BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
- 111 SERR EQU * OUTPUT STATUS ERROR MSG.
- 112 LOAD 1 STATUS ERR MSG #.
- 113 BSL EMSGA SETUP MSG ID.
- 114 MBXN 4,CMPSTAT,TS STATUS PARAMETER.
- 115 BSL EMSGZ COMPLETE MSG BODY & PRINT.
- 116 B FAULT BACK TO CALLER.
- 117 READ-DONE EQU * DATA READ COMPLETE.
- 118 MOV IBBEG,IB RESTORE IB.
- 119 MOV IBBEG,IBEND POINT IBEND TO
- 120 MOV 511,IBENDDSP END OF FRAME.
- 121 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.
- 122 BCE IB,CR,CR1 BRIF CARRIAGE RETURN.
- 123 FAULT SB FBIT FLAG FAULT.
- 124 B REC-DONE1 NO REC READ.
- 125 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.
- 126 MCC AM,IB OVERWRITE CR WITH AM
- 127 B CRLOOP AND CONTINUE.
- 128 REC-DONE ZB FBIT NO FAULT.
- 129 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
- 130 RTN * TO CALLER.
- 131 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
- 132 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.
- 133 RDY-TIMER TIME * GET CURRENT TIME IN D0.
- 134 ADD PERIOD FOR TOTAL TIMING PERIOD.
- 135 STORE D2 FOR CHECKING LATER.
- 136 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).
- 137 MOV X'004F00E0',D1 SET UP
- 138 MOV MASK,H5 AN 'AND' INSTR. IN
- 139 LOAD R0FID D1 TO MASK STATUS.
- 140 MCC X'14',R0;C12 SETUP A 'RTN' INSTR.
- 141 SRA R15,H1 SET ENTRY POINT
- 142 AND R15,X'0F' IN UPPER HALF
- 143 OR R15,X'40' OF H1 AS 4.
- 144 SRA R15,MASK-STAT MOVE THE LAST
- 145 MCC ST,R15 STATUS TO BUFFER.
- 146 BSLI * MASK IT.
- 147 BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.
- 148 ZB SBIT CLEAR STATUS CHK FLG.
- 149 B TIMER-RTN ALL OK
- 150 STIM RQM * PAUSE.
- 151 TIME * GET CURRENT TIME INTO D0
- 152 BLE LASTIM,D0,CTIM CLOCK NOT RESET.
- 153 MOV CT,CTSAVE SAVE CT REG.
- 154 MOV CTSAVE,CT RESTORE REG.
- 155 B RDY-TIMER NOW TRY IT AGAIN.
- 156 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT
- 157 SB SBIT FLAG BAD STATUS
- 158 TIMER-RTN RTN * TO CALLER
- 159 * * * * *STATUS ERROR PROCESSING* * * * *
- 160 EMSGA EQU * SETUP ERROR MSG ID.
- 161 RTN * TO CALLER.
- 162 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
- 163 EMSGZ MCI SM,TS TERMINATOR.
- 164 MOV TSBEG,TS FOR PRTERR I/F
- 165 BSL PRTERR PRINT MESSAGE.
- 166 RTN * TO CALLER.
- 167 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
- 168 SEND-CHAR EQU *
- 169 IOO CS,0,DEV-ADDR START DATA OUT.
- 170 MOV X'0404',MASK-OK OUTPUT READY
- 171 B TIMER3 WAIT TILL FINISH.
- 172 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
- 173 READY? EQU *
- 174 BSL I/F-STAT Get status of i/f.
- 175 BBZ TAS,RR1 Brif alt. status OK.
- 176 MOV X'8000',MASK-OK Alt. status clear.
- 177 BSL TIMER3 Check if ready.
- 178 BBS SBIT,RR9 Brif it won't come ready.
- 179 RR1 BBS OUT-RDY,RR2 Brif OK for output.
- 180 MOV X'0404',MASK-OK Output ready set.
- 181 BSL TIMER3 Check if ready.
- 182 BBS SBIT,RR9 Brif it won't come ready.
- 183 RR2 BBS NCCIO,RR3 Brif not concurrent.
- 184 IOO R15,4,DEV-ADDR Disconnect.
- 185 MOV X'0101',MASK-OK Not concurrent set.
- 186 BSL TIMER3 Check and loop.
- 187 BBS SBIT,RR9 Brif it won't clear CCIO.
- 188 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
- 189 SRA R15,MASK Point to scratch area.
- 190 IOI R15,0,DEV-ADDR Dummy character read to
- 191 MOV X'0200',MASK-OK clear input flag.
- 192 BSL TIMER3 Check it out.
- 193 RR9 RTN * It's ready.
- 194 END
-
- DK2U
- 001 FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
- 002 *USER*KERMIT
- 003 *11 MAR 1987
- 004 *R10*170S
- 005 *11 MAR 1987
- 006 *FISHER
- 007 *For Ultimate Processor in microVAX
- 008 DEV-ADDR DEFN 2 2610 address.\ N 2 1
- 009 ST AR 7 Status reg.
- 010 STATUS DEFH ST,0 Status byte.\ H 0 7
- 011 CMPSTAT DEFT ST,0 Complete - both bytes\ T 0 7
- 012 TAS DEFB ST,0 Test alternate status.\ B 0 7
- 013 PE DEFB ST,2 Parity error.\ B 2 7
- 014 FE DEFB ST,3 Framing error.\ B 3 7
- 015 OE DEFB ST,4 Overrun error.\ B 4 7
- 016 OUT-RDY DEFB ST,5 Output ready.\ B 5 7
- 017 INP-RDY DEFB ST,6 Input ready.\ B 6 7
- 018 NCCIO DEFB ST,7 Not concurrent i/o.\ B 7 7
- 019 ALT-STAT DEFH ST,1 Alternate status.\ H 1 7
- 020 DSR DEFB ST,13 Data Set Ready.\ B D 7
- 021 ALT-FUNC DEFC ST,3 Alternate function.\ C 3 7
- 022 RTS DEFB ST,30 Request To Send.\ B 1E 7
- 023 MASK-STAT DEFH ST,2 Masked status HTLY.\ H 2 7
- 024 MASK DEFH ST,4 Status mask.\ H 4 7
- 025 OK DEFH ST,5 Status test condx.\ H 5 7
- 026 MASK-OK DEFT ST,2 Above two combined.\ T 2 7
- 027 PERIOD DEFH 0,38 Timeout seconds.\ H 26 0
- 028 CT AR 9 Control Table reg.
- 029 CTSAVE EQU AFEND A safe place?
- 030 LASTIM EQU D9 Timer reset refer.
- 031 NOPRMPT DEFC TS,1\ C 1 D
- 032 B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
- 033 B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
- 034 XCHNP EQU *\0005
- 035 MOV TSBEG,TS Init reg. and\0005 E06EED
- 036 INC TS inc to MARK char.\0008 3D
- 037 MCC TS,SC2 Move MARKER char.\0009 D0050D
- 038 SRA R15,PRMPC EOL in there.\000C E0023F
- 039 MCC R15,TS Get prompt (EOL).\000F 6DF9
- 040 BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
- 041 MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
- 042 BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
- BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
- 043 WRITE TS Send EOL as prompt.\001F 6DDD
- 044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
- : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
- 02B 6DDD]=L002 EQUX *
- 045 BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
- 046 Next-char INC TS To next position.\0031 3D
- 047 READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
- ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
- =L003 EQUX *
- 048 BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
- 0
- 049 MCAL TS,6,11 Unlock buffer.\0042 4D06AB
- 050 MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
- 051 BSL STR-PAR Strip 8th bit.\0048 1852
- 052 DEC TS For return I/F.\004A 2D
- 053 MOV TS,TSEND I/F Requirement.\004B E071DD
- 054 ENT 1,CONV CONV Return.\004E 10105A
- 055 * * * * *Send a packet thru i/f only.* * * * *
- 056 SENDP EQU *\0051
- 057 RTN * To DATA/BASIC.\0051 14
- 058 * * * * * Modem i/f. * * * * *
- 059 MODEM EQU *\0052
- 060 RTN *\0052 14
- 061 * * * * * Strip parity * * * * *
- 062 STR-PAR EQU *\0053
- 063 MOV TSBEG,TS Init reg.\0053 E06EED
- 064 AGN? INC TS To next char.\0056 3D
- 065 BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
- 066 AND TS,X'7F' 8th bit = 0.\005B 4D7F70
- 067 B AGN? Loop.] B: AGN?\005E 1E55
- 068 * * * * * end new stuff * * * * *
- 069 RTN RTN * General return.\0060 14
- 070 END
- 071 B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
- 072 B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
- 073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
- 074 *
- 075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
- 076 *EXIT: ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
- 077 *
- 078 I/F-STAT EQU *\0065
- 079 IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
- 080 BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
- 081 ZERO ALT-STAT else set alt.=X'00'\006C A70100
- 082 RTN * and return.\006F 14
- 083 TST-ALT INC ST To alternate byte.\0070 37
- 084 IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
- 085 DEC ST Back to proper position\0074 27
- 086 RTN * and return to caller.\0075 14
- 087 * * * * *
- 088 *ENTRY: OB POINTS TO RX# ADDR CHAR
- 089 *EXIT: SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
- 090 *
- 091 IBENDDSP DEFT 0,231\ T E7 0
- 092 READ-REC EQU *\0076
- 093 BSL READY? CK OK.\0076 1958
- 094 BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
- 095 MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
- 096 BSL SEND-CHAR SEND OUT.\007E 194F
- 097 BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
- 098 IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
- 099 MOV R1,CS POINT TO PROMPT.\0087 161C
- 100 BSL SEND-CHAR TO MICROMUX.\0089 194F
- 101 SRA R15,ALT-FUNC RAISE THE\008B E7033F
- 102 OR R15,X'02' RTS LINE TO\008E 4F0210
- 103 IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
- 104 MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
- 105 MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
- STOREH PERIOD\009B A02619
- 106 BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
- 107 SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
- 108 AND R15,X'FD' THE RTS LINE\00A3 4FFD70
- 109 IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
- 110 BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
- 111 IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
- 112 MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
- 113 BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
- 114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
- 115 LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
- 116 BSL EMSGA SETUP MSG ID.\00B9 1944
- 117 MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
- T,TS\00BE D7007D
- 118 BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
- 119 B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
- 120 READ-DONE EQU * DATA READ COMPLETE.\00C5
- 121 MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
- 122 MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
- 123 MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
- 124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
- 125 BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
- 126 FAULT SB FBIT FLAG FAULT.\00D7 8085
- 127 B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
- 128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
- AAE3
- 129 MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
- 130 B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
- 131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
- 132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
- CCNR SM,R15\00E9 4FFF20
- 133 RTN * TO CALLER.\00EC 14
- 134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
- 135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
- 58] STOREH PERIOD\00F0 A02619
- 136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
- 137 ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
- 138 STORE D2 FOR CHECKING LATER.\00F9 A01899
- 139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
- 140 MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
- 141 MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
- 142 LOAD R0FID D1 TO MASK STATUS.\0106 A08298
- 143 MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
- X'14',R15\010C 4F1420
- 144 SRA R15,H1 SET ENTRY POINT\010F E00E3F
- 145 AND R15,X'0F' IN UPPER HALF\0112 4F0F70
- 146 OR R15,X'40' OF H1 AS 4.\0115 4F4010
- 147 SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
- 148 MCC ST,R15 STATUS TO BUFFER.\011B 6F79
- 149 BSLI * MASK IT.\011D 13
- 150 BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
- 11E F7021705\0122 5527
- 151 ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
- 152 B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
- 153 STIM RQM * PAUSE.\0128 4000A9
- 154 TIME * GET CURRENT TIME INTO D0\012B 4000AA
- 155 BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
- 2 593B
- 156 MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
- 157 MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
- 158 B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
- 159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
- 0140 5CFB
- 160 SB SBIT FLAG BAD STATUS\0142 8092
- 161 TIMER-RTN RTN * TO CALLER\0144 14
- 162 * * * * *STATUS ERROR PROCESSING* * * * *
- 163 EMSGA EQU * SETUP ERROR MSG ID.\0145
- 164 RTN * TO CALLER.\0145 14
- 165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
- 166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
- 167 MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
- 168 BSL PRTERR PRINT MESSAGE.\014C 11000C
- 169 RTN * TO CALLER.\014F 14
- 170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
- 171 SEND-CHAR EQU *\0150
- 172 IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
- 173 MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
- 174 B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
- 175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
- 176 READY? EQU *\0159
- 177 BSL I/F-STAT Get status of i/f.\0159 1864
- 178 BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
- 179 MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF
-
- 180 BSL TIMER3 Check if ready.\0163 18EC
- 181 BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
- 182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
- 183 MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
- 184 BSL TIMER3 Check if ready.\0171 18EC
- 185 BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
- 186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
- 187 IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
- 188 MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
- E
- 189 BSL TIMER3 Check and loop.\0182 18EC
- 190 BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
- 191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
- 192 SRA R15,MASK Point to scratch area.\018C E7043F
- 193 IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
- 194 MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
- 195 BSL TIMER3 Check it out.\0196 18EC
- 196 RR9 RTN * It's ready.\0198 14
- 197 END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
- TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
- :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
- ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084
-
- DK1P
- 001 FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
- 002 *USER*KERMIT
- 003 *20 APR 1987
- 004 *2.2
- 005 *21 APR 1987
- 006 *JF3
- 007 *For PICK on PC/AT
- 008 B PINIT Initialize for printfile] B: INIT\0001 1E0D
- 009 B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
- 010 B ctl Controlify a char] B: ctl\0005 1E74
- 011 B CINIT Init. for catalog data.
- 012 B CNXTPKT Next catalog packet.
- 013 BEGQTAB DTLY X'1302'\0007 00\0008 000068E6
- 014 PF-BEG DEFD 9,6 Printfile beginning.\ D 6 9
- 015 PF-CUR DEFS 9,3 Printfile pointer.\ S 3 9
- 016 PFCURDSP DEFT 9,3 PF-CUR displacement.\ T 3 9
- 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\ D 4 9
- 018 PKTLEN TLY 80\000C 0050
- 019 PINIT EQU *\000E
- 020 BSL GINPARG Input arg to T0.\000E 187D
- 021 ZERO R9WA Detatch reg.\0010 A0A440
- 022 DIV 10 Entries per frame.] DIV =T10\0013 A14351
- 023 ADD BEGQTAB To proper FID. \0016 A10493
- 024 STORE R9FID Point to Q table.\0019 A0A699
- 025 MOV D1,D0 Get remainder.\001C F0068004
- 026 MUL 50 Bytes per entry.] MUL =T50\0020 A14450
- 027 INC T0 Byte 1; linked format.\0023 A00743
- 028 STORE R9DSP Point to table entry.\0026 A0A559
- 029 MOV R9,SR27 Save pointer.\0029 E2B5D9
- 030 MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
- 031 ONE PFCURDSP and displacement.\0030 A90341
- 032 MOV TSBEG,TS Reinit.\0033 E06EED
- 033 MCI C'1',TS Return OK.\0036 4D3140
- 034 B CRTN Done.] B: CRTN\0039 1E6A
- 035 PNXTPKT EQU *\003B
- 036 BSL GINPARG Check for length.\003B 187D
- 037 STORE CTR39 # of chars.\003D A22159
- 038 MOV SR27,R9 Point at table entry.\0040 E2B5E9
- 039 MOV TSBEG,TS Init.\0043 E06EED
- 040 MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
- 15\0049 4F0020
- 041 MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
- 004F 4F0A20
- 042 MOV PF-CUR,R15 Point at data.\0052 E903EF
- 043 BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
- 044 MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
- 045 B PKTDONE That's it.] B: PKTDONE\005C 1E67
- 046 FIXLEN MII R15,TS Move next char.\005E 6FD2
- 047 BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
- A67
- 048 BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
- 049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
- 050 CRTN MCI SM,TS Terminate for\006B 4DFF40
- 051 DEC TS CONV interface\006E 2D
- 052 MOV TS,TSEND to BASIC.\006F E071DD
- 053 ENT 1,CONV Over and out!\0072 10105A
- 054 *
- 055 ctl EQU * See PROTOCOL Manual 2.4.\0075
- 056 MOV TSBEG,TS Init reg.\0075 E06EED
- 057 INC TS To the byte.\0078 3D
- 058 XOR TS,64 Thats it!\0079 4D4050
- 059 B CRTN Finish up.] B: CRTN\007C 1E6A
- 060 GINPARG EQU *\007E
- 061 MOV TSBEG,R15 Init.\007E E06EEF
- 062 BSL CVDR15 Conv to T0\0081 114008
- 063 RTN * To caller.\0084 14
- 064 END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032
-
- DK2X
- 001 FRAME 498] FRM: 498\000 7FF001F2] ORG 1\001
- 002 *KERMIT
- 003 *05JUN86
- 004 *04
- 005 *02E
- 006 *FISHER
- 007 DEV-ADDR DEFN 2 2610 address.\ N 2 1
- 008 ST AR 7 Status reg.
- 009 STATUS DEFH ST,0 Status byte.\ H 0 7
- 010 CMPSTAT DEFT ST,0 Complete - both bytes\ T 0 7
- 011 TAS DEFB ST,0 Test alternate status.\ B 0 7
- 012 PE DEFB ST,2 Parity error.\ B 2 7
- 013 FE DEFB ST,3 Framing error.\ B 3 7
- 014 OE DEFB ST,4 Overrun error.\ B 4 7
- 015 OUT-RDY DEFB ST,5 Output ready.\ B 5 7
- 016 INP-RDY DEFB ST,6 Input ready.\ B 6 7
- 017 NCCIO DEFB ST,7 Not concurrent i/o.\ B 7 7
- 018 ALT-STAT DEFH ST,1 Alternate status.\ H 1 7
- 019 DSR DEFB ST,13 Data Set Ready.\ B D 7
- 020 ALT-FUNC DEFC ST,3 Alternate function.\ C 3 7
- 021 RTS DEFB ST,30 Request To Send.\ B 1E 7
- 022 MASK-STAT DEFH ST,2 Masked status HTLY.\ H 2 7
- 023 MASK DEFH ST,4 Status mask.\ H 4 7
- 024 OK DEFH ST,5 Status test condx.\ H 5 7
- 025 MASK-OK DEFT ST,2 Above two combined.\ T 2 7
- 026 PERIOD DEFH 0,38 Timeout seconds.\ H 26 0
- 027 CT AR 9 Control Table reg.
- 028 CTSAVE EQU AFEND A safe place?
- 029 LASTIM EQU D9 Timer reset refer.
- 030 EOL EQU PRMPC
- 031 B XCHNP 01F2 Exchange packets.] B: XCHNP\001 1E04
- 032 B SENDP 11F2 Send a packet thru i/f.] B: SENDP\003 1E35
- 033 XCHNP EQU *\005
- 034 MOV TSBEG,TS Init reg. and\005 E06EED
- 035 INC TS inc to MARK char.\008 3D
- 036 MCC TS,SC2 Move MARKER char.\009 D0050D
- 037 SRA R15,PRMPC EOL in there.\00C E0023F
- 038 BBS MBIT,MODEM Brif 2610 i/o.\00F 928C0055
- 039 MCC R15,TS Get prompt (EOL).\013 6DF9
- 040 MCAL TS,5,11 Lock buffer frame.\015 4D057B
- 041 WRITE TS Send EOL as prompt.\018 6DDD
- 042 Find-MARK READ TS Get next char.\01A 6DD5
- 043 BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,0\01C B005D019
- 044 Next-char INC TS To next position.\020 3D
- 045 READ TS Get next char.\021 6DD5
- 046 BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,0\023 B002D01F
-
- 047 MCAL TS,6,11 Unlock buffer.\027 4D067B
- 048 MCI SM,TS Terminate for CONV I/F.\02A 4DFF40
- 049 BSL STR-PAR Strip 8th bit.\02D 1836
- 050 DEC TS For return I/F.\02F 2D
- 051 MOV TS,TSEND I/F Requirement.\030 E071DD
- 052 ENT 1,CONV CONV Return.\033 10105A
- 053 * * * * *Send a packet thru i/f only.* * * * *
- 054 SENDP EQU *\036
- 055 RTN * To DATA/BASIC.\036 14
- 056 * * * * * Strip parity * * * * *
- 057 STR-PAR EQU *\037
- 058 MOV TSBEG,TS Init reg.\037 E06EED
- 059 AGN? INC TS To next char.\03A 3D
- 060 BCE TS,SM,RTN All done.] BC: TS,SM,RTN,2\03B 4DFF0843
- 061 AND TS,X'7F' 8th bit = 0.\03F 4D7FE0
- 062 B AGN? Loop.] B: AGN?\042 1E39
- 063 RTN RTN * General return.\044 14
- 064 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
- 065 *
- 066 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
- 067 *EXIT: ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
- 068 *
- 069 I/F-STAT EQU *\045
- 070 IOI ST,1,DEV-ADDR Input 2610 status.\045 472078
- 071 BBS TAS,TST-ALT Brif test alt. flagged\048 9700004F
- 072 ZERO ALT-STAT else set alt.=X'00'\04C A70100
- 073 RTN * and return.\04F 14
- 074 TST-ALT INC ST To alternate byte.\050 37
- 075 IOI ST,7,DEV-ADDR Input alt. status.\051 47E078
- 076 DEC ST Back to proper position\054 27
- 077 RTN * and return to caller.\055 14
- 078 * * * * *
- 079 *ENTRY: OB POINTS TO RX# ADDR CHAR
- 080 *EXIT: SBIT set means error condx in status byte(s).
- 081 *
- 082 IBENDDSP DEFT 0,231\ T E7 0
- 083 MODEM EQU * Talk to 2610 board.\056
- 084 BSL READY? Check for all OK.\056 191D
- 085 BBS SBIT,SERR Brif can't clear it.\058 92920083
- 086 IOO IB,2,DEV-ADDR Start a concurrent input.\05C 4A5078
- 087 SRA R15,EOL Point your register.\05F E0023F
- 088 IOO R15,0,DEV-ADDR Fire!\062 4F1078
- 089 MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\065 F70241B6
- 090 B TIMER3 WAIT TILL FINISH.] B: TIMER3\069 1EBA
- 091 MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\06B F70241B2
- 092 MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\06F A1B758]
- STOREH PERIOD\072 A02619
- 093 BSL RDY-TIMER WAIT TILL DONE.\075 18C0
- 094 BBZ SBIT,READ-DONE BRIF FINISHED.\077 92920892
- 095 IOO R15,4,DEV-ADDR DISCONNECT.\07B 4F9078
- 096 MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\07E F70241B2
- 097 BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\082 18BA
- 098 SERR EQU * OUTPUT STATUS ERROR MSG.\084
- 099 LOAD 1 STATUS ERR MSG #.] LOAD =T1\084 A1B458
- 100 BSL EMSGA SETUP MSG ID.\087 1912
- 101 MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\089 A1B958] MBX CMPSTAT
- ,TS\08C D7007D
- 102 BSL EMSGZ COMPLETE MSG BODY & PRINT.\08F 1913
- 103 B FAULT BACK TO CALLER.] B: FAULT\091 1EA4
- 104 READ-DONE EQU * DATA READ COMPLETE.\093
- 105 MOV IBBEG,IB RESTORE IB.\093 E0E4EA
- 106 MOV IBBEG,IBEND POINT IBEND TO\096 F0E7C0E4
- 107 MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\09A F0E741B8
- 108 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.\09E 6A0886
- 109 BCE IB,EOL,EOL1 Brif EOL character.
- 110 FAULT SB FBIT Flag an uh-oh.
- 111 B PKT-DONE1 No good packet.
- 112 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BT: IB,IBEND,REC-DONE,2] BR:2 IB
- ,IBEND,REC-DONE\0A9 C0E7A8B1
- 113 MCI SM,IB OVERWRITE CR WITH AM\0AD 4AFE20
- 114 B EOL-LOOP and continue.] B: EOL-LOOP\0B0 1E9D
- 115 REC-DONE ZB FBIT NO FAULT.\0B2 7285
- 116 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\0B4 E0E7EF] MC
- CNR SM,R15\0B7 4FFF20
- 117 RTN * TO CALLER.\0BA 14
- 118 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
- 119 TIMER3 MOV 3,PERIOD Seconds to timeout.] MOV =T3,PERIOD] LOADT =T3\0BB A1B55
- 8] STOREH PERIOD\0BE A02619
- 120 RDY-TIMER TIME * Get time into D0.\0C1 40007A
- 121 ADD PERIOD To figure wakeup time\0C4 A02613
- 122 STORE D2 and save it.\0C7 A01899
- 123 SLOOP BSL I/F-STAT Get status byte(s).\0CA 1844
- 124 MOV X'004F00E0',D1 Set up] MOV =DX'004F00E0',D1\0CC F00481AF
- 125 MOV MASK,H5 an 'AND' instr. in\0D0 F00A0704
- 126 LOAD R0FID D1 to mask status.\0D4 A08298
- 127 MCC X'14',R0;C12 Set up a 'RTN' instr.] SRARC R15,R0;C12\0D7 E00C3F] MCCNR
- X'14',R15\0DA 4F1420
- 128 SRA R15,H1 Set entry point\0DD E00E3F
- 129 AND R15,X'0F' in upper half\0E0 4F0FE0
- 130 OR R15,X'40' of H1 as 4.\0E3 4F40C0
- 131 SRA R15,MASK-STAT Move the last\0E6 E7023F
- 132 MCC ST,R15 status to buffer.\0E9 6F79
- 133 BSLI * Mask it.\0EB 13
- 134 BU MASK-STAT,OK,STIM Brif not OK.] BT: MASK-STAT,OK,STIM,0\0EC F7021705\0F0
- 50F5
- 135 ZB SBIT Clear status check flag.\0F2 7292
- 136 B TIMER-RTN All is OK.] B: TIMER-RTN\0F4 1F11
- 137 STIM RQM * Pause for awhile.\0F6 400079
- 138 TIME * Check the time.\0F9 40007A
- 139 BLE LASTIM,D0,CTIM Clock not reset.] BT: LASTIM,D0,CTIM,3\0FC F2399006\100
- 5D09
- 140 MOV CT,CTSAVE Save for later.\102 E0DBD9
- 141 MOV CTSAVE,CT Restroe register.\105 E0DBE9
- 142 B RDY-TIMER Now try again.] B: RDY-TIMER\108 1EC0
- 143 CTIM BL D0,D2,SLOOP Brif not yet timed out.] BT: D0,D2,SLOOP,1\10A F0069018\
- 10E 54C9
- 144 SB SBIT Flag bad status.\110 8292
- 145 TIMER-RTN RTN * To caller.\112 14
- 146 * * * * *STATUS ERROR PROCESSING* * * * *
- 147 EMSGA EQU * SETUP ERROR MSG ID.\113
- 148 RTN * TO CALLER.\113 14
- 149 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
- 150 EMSGZ MCI SM,TS TERMINATOR.\114 4DFF40
- 151 MOV TSBEG,TS FOR PRTERR I/F\117 E06EED
- 152 BSL PRTERR PRINT MESSAGE.\11A 11000C
- 153 RTN * TO CALLER.\11D 14
- 154 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
- 155 READY? EQU *\11E
- 156 BSL I/F-STAT Get status of i/f.\11E 1844
- 157 BBZ TAS,RR1 Brif alt. status OK.\120 9700092D
- 158 MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\124 F70241B1
- 159 BSL TIMER3 Check if ready.\128 18BA
- 160 BBS SBIT,RR9 Brif it won't come ready.\12A 9292015C
- 161 RR1 BBS OUT-RDY,RR2 Brif OK for output.\12E 9705013B
- 162 MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\132 F70241B6
- 163 BSL TIMER3 Check if ready.\136 18BA
- 164 BBS SBIT,RR9 Brif it won't come ready.\138 9292015C
- 165 RR2 BBS NCCIO,RR3 Brif not concurrent.\13C 9707014C
- 166 IOO R15,4,DEV-ADDR Disconnect.\140 4F9078
- 167 MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\143 F70241B2
-
- 168 BSL TIMER3 Check and loop.\147 18BA
- 169 BBS SBIT,RR9 Brif it won't clear CCIO.\149 9292015C
- 170 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\14D 9706095C
- 171 SRA R15,MASK Point to scratch area.\151 E7043F
- 172 IOI R15,0,DEV-ADDR Dummy character read to\154 4F0078
- 173 MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\157 F70241B3
- 174 BSL TIMER3 Check it out.\15B 18BA
- 175 RR9 RTN * It's ready.\15D 14
- 176 END]=DX'004F00E0' :D X'004F00E0'\15E 004F00E0]=TX'8000' :T X'8000'\162 8000
- ]=TX'0101' :T X'0101'\164 0101]=TX'0200' :T X'0200'\166 0200]=T1 :T 1\168 00
- 01]=T3 :T 3\16A 0003]=TX'0404' :T X'0404'\16C 0404]=T5 :T 5\16E 0005]=T511 :
- T 511\170 01FF]=TX'80'+4 :T X'80'+4\172 0084\FFE 9D31
-